import {
    data,
} from '../../api/api.js';

const full = await data.full_list;
const name = await data.name_list;
const map = await data.shili_list;
const addall = {};
const alldata = {};

// i为地区，所有在i的人看到一样的怪
export async function monsterscache({ i, location }) {
    if (!Object.prototype.hasOwnProperty.call(alldata, i)) {
        alldata[i] = {
            label: -1, // 初始化为无效时间
            data: []
        };
    }

    const currentHour = new Date().getHours();

    // 如果时间变了，重新生成怪物
    if (currentHour !== alldata[i].label) {
        alldata[i].label = currentHour;
        alldata[i].data = await generateMonster({ i, location });
    }

    return alldata[i].data;
}

// 变异逻辑
export async function add({ i, num }) {
    if (!Object.prototype.hasOwnProperty.call(addall, i)) {
        addall[i] = {
            acount: 0
        };
    }

    addall[i].acount += num;
    const mutationThreshold = Math.floor(Math.random() * (30 - 10)) + 10;

    if (addall[i].acount > mutationThreshold) {
        addall[i].acount = 0;
        return 1; // 触发变异
    }

    return 0; // 未触发变异
}

// 生成怪物
export async function generateMonster({ i, location }) {
    const [mini, max, num] = map[i].split('.').map(Number); // 最小等级、最大等级、数量
    const monsters = full[location] || ["普通怪物"]; // 根据 location 获取对应怪物列表

    const generatedMonsters = [];
    for (let j = 0; j < num; j++) {
        const level = Math.floor(Math.random() * (max - mini + 1)) + mini; // 随机生成怪物等级
        const stage = name[level] || "未知阶段"; // 根据等级获取成长阶段

        generatedMonsters.push({
            id: j + 1, // 编号从1开始
            name: stage + monsters[Math.floor(Math.random() * monsters.length)], // 阶段 + 怪物名称
            killNum: 1,
            level
        });
    }

    return generatedMonsters;
}